[Amazon FSx for NetApp ONTAP] SMB暗号化時のパフォーマンスを比較してみた
SMB暗号化時のパフォーマンスが気になる
こんにちは、のんピ(@non____97)です。
皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)でSMBの暗号化が行われている場合、どのぐらいのパフォーマンス影響があるのか気になったことはありますか? 私はあります。
NFSの場合はKerberos認証による暗号化を行う場合は以下記事で紹介されているとおり、露骨にパフォーマンス影響が発生します。
では、SMBの暗号化の場合はどうでしょうか。
NetApp のドキュメントを確認すると、SMB暗号化を使用するとパフォーマンスが低下すると明に記載されていますね。
SMB セッションで SMB 暗号化を使用すると、 Windows クライアントとのすべての SMB 通信でパフォーマンスが低下し、クライアントとサーバ( SMB サーバを含む SVM を実行しているクラスタ上のノード)の両方に影響します。
パフォーマンスへの影響は、 CPU 使用率の増加としてクライアントとサーバの両方に表示されますが、ネットワークトラフィックの量は変わりません。
パフォーマンスへの影響の程度は、実行している ONTAP 9 のバージョンによって異なります。ONTAP 9.7 以降では、新しい暗号化のオフロードアルゴリズムによって、暗号化された SMB トラフィックのパフォーマンスが向上します。SMB 暗号化オフロードは、 SMB 暗号化が有効になっている場合にデフォルトで有効になります。
SMB 暗号化のパフォーマンスを高めるには、 AES-NI オフロード機能が必要です。お使いのプラットフォームで AES-NI オフロードがサポートされていることを確認するには、 Hardware Universe ( HWU )を参照してください。
はるかに高速なGCMアルゴリズムをサポートするSMBバージョン3.11を使用できる場合は、さらにパフォーマンスが向上します。
ネットワーク、 ONTAP 9 のバージョン、 SMB のバージョン、および SVM の実装方法に応じて SMB 暗号化のパフォーマンスへの影響には幅があるため、影響の程度はご使用のネットワーク環境でのテストによってのみ検証可能です。
では、どのぐらいの影響があるのでしょうか。
シチュエーションを絞って簡易的に計測してみました。
いきなりまとめ
- 検証のサマリは以下のとおり
- randwriteのSMB暗号化時との平均スループット差は-3.94%〜0.22%
- randwriteのSMB暗号化時との平均IOPS差は-3.94%〜0.22%
- randwriteのSMB暗号化時との平均レイテンシー差は-0.22%〜4.08%
- randreadのSMB暗号化時との平均スループット差は-32.21%〜-0.58%
- randreadのSMB暗号化時との平均IOPS差は-32.22%〜-0.51%
- randreadのSMB暗号化時との平均レイテンシー差は-0.01%〜27.42%
- スループットとIOPSは同じ割合で変動する
- ブロックサイズが小さい場合は暗号化時のパフォーマンス差が大きくなる傾向がある
- SMB暗号化を実施するとFSxNファイルシステムのCPU使用率、ネットワークIOPS、ネットワークスループットが増加する傾向がある
- いずれもブロックサイズが小さい方が与える影響が大きい
- CPU使用率は特に顕著
- 暗号化によって発生するオーバーヘッド分と想定
- いずれもブロックサイズが小さい方が与える影響が大きい
- 細かいIOを長時間実行するようなワークロードではパフォーマンス影響を感じる可能性がある
検証環境
検証環境は以下のとおりです。
FSxNの性能は以下のとおりです。
- デプロイタイプ : Single-AZ 1
- HAペア数 : 1
- SSDサイズ : 1,024 GiB
- スループットキャパシティ : 128 MBps
- プロビジョンドIOPS : 3,072 IOPS
SMBクライアントおよび接続時の情報は以下のとおりです。
- OS : Windows Server 2022 (Windows_Server-2022-English-Full-Base-2024.07.10)
- インスタンスタイプ : c7i.large
- 接続プロトコル : SMB 3.1.1
- 認証方式 : Kerberos認証
- 暗号化アルゴリズム : AES-128-GCM
確認観点は以下のとおりです。
- SMB暗号化の利用有無によって以下の値の変化
- IOPS
- スループット
- レイテンシー
- FSxNのCPU使用率
- FSxNのクライアントスループット
- FSxNのクライアントIOPS
パフォーマンスの計測はfio
を用いて行います。
fioのGitHubリポジトリからfio-3.38-x64.msi
をダウンロードして、EC2インスタンスにインストールしました。
テストは以下シナリオで行います。
- SMB暗号化の実施有無それぞれで、randwrite と randread を計測
- ブロックサイズは以下
- 4 KiB
- 16 KiB
- 64 KiB
- 256 KiB
- 1 MiB
- 書き込みおよび読み込みはどちらも同期処理
- スレッド数は4つ固定
- 実行時間は60秒
- 各実行間は少なくとも5分以上間隔を空ける
SMB暗号化無効の場合
SMB暗号化が無効であることの確認
まずはSMB暗号化が無効である場合から確認します。
FSxNファイルシステムにSSHで接続して、SMB暗号化とSMB署名を無効化します。合わせてSMB 3.1が有効であることも確認しておきます。
::*> cifs security modify -is-signing-required false -is-smb-encryption-required false
::*> cifs security show -fields is-smb-encryption-required, is-signing-required
vserver is-signing-required is-smb-encryption-required
------- ------------------- --------------------------
svm false false
::*> cifs options show -fields smb1-enabled, smb2-enabled, smb3-enabled, smb31-enabled, is-fake-open-enabled, is-large-mtu-enabled, copy-offload-enabled
vserver smb1-enabled smb2-enabled smb3-enabled smb31-enabled copy-offload-enabled is-fake-open-enabled is-large-mtu-enabled
------- ------------ ------------ ------------ ------------- -------------------- -------------------- --------------------
svm false true true true false true true
この状態で接続してきたセッションを表示して、暗号化されていないことを確認します。
::*> cifs session show -instance
Vserver: svm
Node: FsxId0e64a4f5386f74c87-01
Session ID: 719450040472436864
Connection ID: 239866898
Incoming Data LIF IP Address: 10.0.8.246
Workstation IP Address: 10.0.0.34
Authentication Mechanism: Kerberos
User Authenticated as: domain-user
Windows User: CORP\Administrator
UNIX User: root
Open Shares: 1
Open Files: 0
Open Other: 0
Connected Time: 2s
Idle Time: 2s
Protocol Version: SMB3_1
Continuously Available: No
Is Session Signed: false
NetBIOS Name: -
SMB Encryption Status: unencrypted
Large MTU Enabled: true
Connection Count: 1
Active Shares: ipc$
randwrite
4KiB
ランダムな書き込みrandwrite
から試します。
まずは4KiBです。
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs `
--ioengine=psync `
--direct=1 `
--rw=randwrite `
--bs=4K `
--size=1G `
--numjobs=4 `
--runtime=60 `
--eta-newline=10 `
--time_based=1 `
--group_reporting `
--norandommap
fio: this platform does not support process shared mutexes, forcing use of threads. Use the 'thread' option to get rid of this warning.
fio: Windows does not support direct or non-buffered io with the synchronous ioengines. Use the 'windowsaio' ioengine with 'direct=1' and 'iodepth=1' instead.
どうやらWindowsではpsync
はサポートされていないようです。表示されているようにdirect=1
とiodepth=1
を設定した上でIOエンジンをwindowsaio
に変更し、同期書き込みを行うようにします。
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=4K `
--size=1G `
--thread `
--numjobs=4 `
--runtime=60 `
--eta-newline=10 `
--time_based=1 `
--group_reporting `
--norandommap
fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
Jobs: 4 (f=4): [w(4)][18.3%][w=22.6MiB/s][w=5774 IOPS][eta 00m:49s]
Jobs: 4 (f=4): [w(4)][35.0%][w=26.2MiB/s][w=6720 IOPS][eta 00m:39s]
Jobs: 4 (f=4): [w(4)][51.7%][w=26.0MiB/s][w=6644 IOPS][eta 00m:29s]
Jobs: 4 (f=4): [w(4)][68.9%][w=26.0MiB/s][w=6656 IOPS][eta 00m:19s]
Jobs: 4 (f=4): [w(4)][85.2%][w=24.9MiB/s][w=6384 IOPS][eta 00m:09s]
Jobs: 4 (f=4): [w(4)][100.0%][w=24.6MiB/s][w=6294 IOPS][eta 00m:00s]
fio_noencrypt_randwrite_4KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=4344: Thu Oct 17 01:36:03 2024
write: IOPS=6471, BW=25.3MiB/s (26.5MB/s)(1517MiB/60001msec); 0 zone resets
slat (usec): min=3, max=7441, avg= 9.94, stdev=18.56
clat (nsec): min=257, max=12169k, avg=607455.32, stdev=224251.82
lat (usec): min=479, max=12184, avg=617.39, stdev=225.50
clat percentiles (usec):
| 1.00th=[ 515], 5.00th=[ 529], 10.00th=[ 537], 20.00th=[ 545],
| 30.00th=[ 553], 40.00th=[ 570], 50.00th=[ 578], 60.00th=[ 586],
| 70.00th=[ 603], 80.00th=[ 619], 90.00th=[ 660], 95.00th=[ 725],
| 99.00th=[ 1188], 99.50th=[ 1696], 99.90th=[ 3621], 99.95th=[ 6128],
| 99.99th=[ 7504]
bw ( KiB/s): min=11816, max=27434, per=99.68%, avg=25803.25, stdev=498.71, samples=480
iops : min= 2954, max= 6857, avg=6449.70, stdev=124.69, samples=480
lat (nsec) : 500=0.01%
lat (usec) : 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%, 250=0.01%
lat (usec) : 500=0.10%, 750=95.81%, 1000=2.61%
lat (msec) : 2=1.08%, 4=0.30%, 10=0.08%, 20=0.01%
cpu : usr=0.00%, sys=0.00%, ctx=0, majf=0, minf=0
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,388280,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=25.3MiB/s (26.5MB/s), 25.3MiB/s-25.3MiB/s (26.5MB/s-26.5MB/s), io=1517MiB (1590MB), run=60001-60001msec
正常に実行が完了しました。
以降は実行結果のみを記載します。
16KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=16K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=85.8MiB/s][w=5490 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][100.0%][w=83.9MiB/s][w=5371 IOPS][eta 00m:00s]
fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6076: Thu Oct 17 01:41:18 2024
write: IOPS=5335, BW=83.4MiB/s (87.4MB/s)(5002MiB/60001msec); 0 zone resets
slat (usec): min=4, max=2439, avg=17.21, stdev=16.34
clat (nsec): min=293, max=34816k, avg=731649.18, stdev=378838.72
lat (usec): min=531, max=34827, avg=748.86, stdev=379.56
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=43173, max=95984, per=99.71%, avg=85120.72, stdev=2701.29, samples=480
iops : min= 2696, max= 5999, avg=5318.39, stdev=168.90, samples=480
lat (nsec) : 500=0.01%
lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%
lat (usec) : 250=0.01%, 500=0.01%, 750=80.91%, 1000=13.81%
lat (msec) : 2=4.03%, 4=1.03%, 10=0.18%, 20=0.01%, 50=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=83.4MiB/s (87.4MB/s), 83.4MiB/s-83.4MiB/s (87.4MB/s-87.4MB/s), io=5002MiB (5245MB), run=60001-60001msec
64KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=64K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=130MiB/s][w=2086 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][100.0%][w=137MiB/s][w=2186 IOPS][eta 00m:00s]
fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6716: Thu Oct 17 01:47:05 2024
write: IOPS=2133, BW=133MiB/s (140MB/s)(8002MiB/60002msec); 0 zone resets
slat (usec): min=5, max=3039, avg=41.95, stdev=40.08
clat (nsec): min=236, max=34876k, avg=1831586.87, stdev=834325.86
lat (usec): min=687, max=34887, avg=1873.54, stdev=828.50
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=72395, max=228864, per=99.72%, avg=136172.73, stdev=4813.75, samples=480
iops : min= 1130, max= 3576, avg=2126.08, stdev=75.28, samples=480
lat (nsec) : 250=0.01%, 500=0.01%
lat (usec) : 4=0.01%, 10=0.02%, 20=0.01%, 50=0.01%, 500=0.01%
lat (usec) : 750=0.25%, 1000=7.36%
lat (msec) : 2=62.11%, 4=28.66%, 10=1.50%, 20=0.06%, 50=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=133MiB/s (140MB/s), 133MiB/s-133MiB/s (140MB/s-140MB/s), io=8002MiB (8390MB), run=60002-60002msec
256KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=256K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 256KiB-256KiB, (W) 256KiB-256KiB, (T) 256KiB-256KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=141MiB/s][w=564 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][100.0%][w=139MiB/s][w=557 IOPS][eta 00m:00s]
fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=5116: Thu Oct 17 01:53:36 2024
write: IOPS=573, BW=143MiB/s (150MB/s)(8604MiB/60003msec); 0 zone resets
slat (usec): min=11, max=9760, avg=137.95, stdev=200.01
clat (nsec): min=245, max=39983k, avg=6833976.24, stdev=2131928.32
lat (usec): min=1374, max=40005, avg=6971.92, stdev=2096.35
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=78532, max=412160, per=99.72%, avg=146432.61, stdev=7654.79, samples=480
iops : min= 304, max= 1610, avg=570.82, stdev=29.93, samples=480
lat (nsec) : 250=0.01%, 500=0.01%
lat (usec) : 2=0.01%, 4=0.03%, 10=0.05%, 20=0.02%, 50=0.01%
lat (usec) : 100=0.01%, 500=0.01%
lat (msec) : 2=1.73%, 4=5.54%, 10=88.43%, 20=4.03%, 50=0.15%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=143MiB/s (150MB/s), 143MiB/s-143MiB/s (150MB/s-150MB/s), io=8604MiB (9022MB), run=60003-60003msec
1MiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=1M `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=142MiB/s][w=142 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][100.0%][w=140MiB/s][w=139 IOPS][eta 00m:00s]
fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6984: Thu Oct 17 02:00:32 2024
write: IOPS=144, BW=144MiB/s (151MB/s)(8660MiB/60023msec); 0 zone resets
slat (usec): min=29, max=189518, avg=349.04, stdev=3811.88
clat (nsec): min=432, max=84810k, avg=27364272.29, stdev=7961318.27
lat (msec): min=4, max=189, avg=27.71, stdev= 8.35
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=85672, max=393597, per=99.77%, avg=147394.77, stdev=6263.72, samples=480
iops : min= 80, max= 384, avg=142.07, stdev= 6.16, samples=480
lat (nsec) : 500=0.01%, 1000=0.01%
lat (usec) : 4=0.01%, 10=0.05%, 20=0.27%, 50=0.02%, 100=0.02%
lat (msec) : 10=2.29%, 20=13.37%, 50=83.56%, 100=0.39%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=144MiB/s (151MB/s), 144MiB/s-144MiB/s (151MB/s-151MB/s), io=8660MiB (9081MB), run=60023-60023msec
randread
4KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randread_4KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=4K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randread_4KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randread_4KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [r(4)][19.7%][r=27.1MiB/s][r=6926 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=21.7MiB/s][r=5549 IOPS][eta 00m:00s]
fio_noencrypt_randread_4KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=1176: Thu Oct 17 02:19:50 2024
read: IOPS=6504, BW=25.4MiB/s (26.6MB/s)(1524MiB/60002msec)
slat (usec): min=3, max=2116, avg= 9.49, stdev= 7.73
clat (usec): min=34, max=83915, avg=604.39, stdev=932.44
lat (usec): min=185, max=83921, avg=613.88, stdev=932.48
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=20109, max=36160, per=100.00%, avg=26045.74, stdev=797.31, samples=476
iops : min= 5026, max= 9039, avg=6510.35, stdev=199.37, samples=476
lat (usec) : 50=0.01%, 100=0.01%, 250=50.70%, 500=10.69%, 750=22.96%
lat (usec) : 1000=6.86%
lat (msec) : 2=3.08%, 4=3.77%, 10=1.93%, 20=0.01%, 50=0.01%
lat (msec) : 100=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=25.4MiB/s (26.6MB/s), 25.4MiB/s-25.4MiB/s (26.6MB/s-26.6MB/s), io=1524MiB (1599MB), run=60002-60002msec
正常に実行完了しましたが、ファイルの作成が完了するのに7分ほどかかっていました。以降の実施方法は少し変更します。
16KiB
ジョブの名前をrandwrite時と同様のものにして実行します。
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=16K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
Jobs: 4 (f=4): [r(4)][20.0%][r=61.9MiB/s][r=3962 IOPS][eta 00m:48s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=58.8MiB/s][r=3760 IOPS][eta 00m:00s]
fio_noencrypt_randwrite_16KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=3732: Thu Oct 17 02:30:35 2024
read: IOPS=3661, BW=57.2MiB/s (60.0MB/s)(3433MiB/60002msec)
slat (usec): min=3, max=240, avg= 7.79, stdev= 5.14
clat (usec): min=161, max=87705, avg=1083.61, stdev=1654.70
lat (usec): min=211, max=87710, avg=1091.40, stdev=1654.70
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=33600, max=100608, per=99.97%, avg=58571.70, stdev=4907.79, samples=480
iops : min= 2100, max= 6288, avg=3660.49, stdev=306.75, samples=480
lat (usec) : 250=13.85%, 500=26.88%, 750=15.57%, 1000=23.72%
lat (msec) : 2=8.38%, 4=4.93%, 10=6.44%, 20=0.22%, 50=0.02%
lat (msec) : 100=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=57.2MiB/s (60.0MB/s), 57.2MiB/s-57.2MiB/s (60.0MB/s-60.0MB/s), io=3433MiB (3600MB), run=60002-60002msec
正常に実行が完了しました。ただし、ファイルは作成してしまっています。
64KiB
allow_file_create=0
でファイルを作成しないようにしてみます。
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=64K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
fio: file creation disallowed by allow_file_create=0
Jobs: 3 (f=3): [r(2),_(1),r(1)][18.3%][r=191MiB/s][r=3056 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 3 (f=0): [f(2),_(1),f(1)][100.0%][r=442MiB/s][r=7079 IOPS][eta 00m:00s]
fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=3348: Thu Oct 17 02:37:23 2024
read: IOPS=5506, BW=344MiB/s (361MB/s)(20.2GiB/60001msec)
slat (usec): min=4, max=785, avg= 8.67, stdev= 5.84
clat (usec): min=40, max=24960, avg=535.33, stdev=397.52
lat (usec): min=260, max=24967, avg=544.00, stdev=397.37
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=130937, max=501776, per=100.00%, avg=352396.92, stdev=39616.35, samples=357
iops : min= 2044, max= 7839, avg=5505.07, stdev=618.91, samples=357
lat (usec) : 50=0.01%, 250=0.01%, 500=79.89%, 750=3.52%, 1000=1.50%
lat (msec) : 2=14.25%, 4=0.79%, 10=0.04%, 20=0.01%, 50=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=344MiB/s (361MB/s), 344MiB/s-344MiB/s (361MB/s-361MB/s), io=20.2GiB (21.7GB), run=60001-60001msec
実行できたのですが、ジョブ実行数が3になっていますね。
ジョブ名ではなく、既存のファイル名を指定するように変更します。
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randread_64KiB_block_1GiB_4jobs `
--filename fio_noencrypt_randwrite_64KiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=64K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randread_64KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=524MiB/s][r=8381 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=467MiB/s][r=7477 IOPS][eta 00m:00s]
fio_noencrypt_randread_64KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6624: Thu Oct 17 03:47:26 2024
read: IOPS=8457, BW=529MiB/s (554MB/s)(31.0GiB/60001msec)
slat (usec): min=4, max=928, avg= 9.89, stdev= 7.80
clat (usec): min=79, max=10792, avg=462.36, stdev=96.53
lat (usec): min=261, max=10830, avg=472.25, stdev=96.81
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=511620, max=559176, per=100.00%, avg=541920.97, stdev=2490.92, samples=476
iops : min= 7993, max= 8734, avg=8466.02, stdev=38.96, samples=476
lat (usec) : 100=0.01%, 250=0.01%, 500=61.54%, 750=38.16%, 1000=0.19%
lat (msec) : 2=0.07%, 4=0.03%, 20=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=529MiB/s (554MB/s), 529MiB/s-529MiB/s (554MB/s-554MB/s), io=31.0GiB (33.3GB), run=60001-60001msec
4つのジョブで動作するようになりました。以降のrandreadはこの方法で計測します。
256KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randread_256KiB_block_1GiB_4jobs `
--filename fio_noencrypt_randwrite_256KiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=256K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randread_256KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 256KiB-256KiB, (W) 256KiB-256KiB, (T) 256KiB-256KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=574MiB/s][r=2296 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=506MiB/s][r=2023 IOPS][eta 00m:00s]
fio_noencrypt_randread_256KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6780: Thu Oct 17 03:54:02 2024
read: IOPS=2262, BW=566MiB/s (593MB/s)(33.1GiB/60002msec)
slat (usec): min=7, max=1251, avg=17.29, stdev=11.01
clat (usec): min=453, max=13762, avg=1748.94, stdev=439.96
lat (usec): min=464, max=13771, avg=1766.23, stdev=439.95
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=387072, max=598251, per=100.00%, avg=579889.37, stdev=6124.54, samples=476
iops : min= 1512, max= 2336, avg=2264.25, stdev=23.90, samples=476
lat (usec) : 500=0.02%, 750=0.23%, 1000=0.67%
lat (msec) : 2=92.71%, 4=6.13%, 10=0.16%, 20=0.10%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=566MiB/s (593MB/s), 566MiB/s-566MiB/s (593MB/s-593MB/s), io=33.1GiB (35.6GB), run=60002-60002msec
1MiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_noencrypt_randread_1MiB_block_1GiB_4jobs `
--filename fio_noencrypt_randwrite_1MiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=1M `
.
.
(以降のオプションは同一なので省略)
.
.
fio_noencrypt_randread_1MiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=575MiB/s][r=574 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=527MiB/s][r=527 IOPS][eta 00m:00s]
fio_noencrypt_randread_1MiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=5956: Thu Oct 17 04:01:02 2024
read: IOPS=571, BW=571MiB/s (599MB/s)(33.5GiB/60006msec)
slat (usec): min=21, max=619, avg=45.15, stdev=14.34
clat (usec): min=1628, max=38813, avg=6951.95, stdev=752.29
lat (usec): min=1653, max=38845, avg=6997.10, stdev=752.34
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=481280, max=608181, per=100.00%, avg=585635.83, stdev=3129.64, samples=476
iops : min= 470, max= 592, avg=570.27, stdev= 3.02, samples=476
lat (msec) : 2=0.02%, 4=0.27%, 10=99.30%, 20=0.36%, 50=0.06%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=571MiB/s (599MB/s), 571MiB/s-571MiB/s (599MB/s-599MB/s), io=33.5GiB (35.9GB), run=60006-60006msec
SMB暗号化有効の場合
SMB暗号化の有効化
::*> cifs security modify -is-smb-encryption-required true
::*> cifs security show -fields is-smb-encryption-required, is-signing-required
vserver is-signing-required is-smb-encryption-required
------- ------------------- --------------------------
svm false true
::*> cifs session show -instance
Vserver: svm
Node: FsxId0e64a4f5386f74c87-01
Session ID: 719450040472436870
Connection ID: 239866903
Incoming Data LIF IP Address: 10.0.8.246
Workstation IP Address: 10.0.0.34
Authentication Mechanism: Kerberos
User Authenticated as: domain-user
Windows User: CORP\Administrator
UNIX User: root
Open Shares: 1
Open Files: 0
Open Other: 0
Connected Time: 3s
Idle Time: 3s
Protocol Version: SMB3_1
Continuously Available: No
Is Session Signed: false
NetBIOS Name: -
SMB Encryption Status: encrypted
Large MTU Enabled: true
Connection Count: 1
Active Shares: share
randwrite
4KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randwrite_4KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=4K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randwrite_4KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_encrypt_randwrite_4KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=24.5MiB/s][w=6277 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][w=24.5MiB/s][w=6272 IOPS][eta 00m:00s]
fio_encrypt_randwrite_4KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=1012: Thu Oct 17 05:04:40 2024
write: IOPS=6216, BW=24.3MiB/s (25.5MB/s)(1457MiB/60001msec); 0 zone resets
slat (usec): min=4, max=4859, avg=12.74, stdev=14.69
clat (nsec): min=259, max=10331k, avg=629842.45, stdev=220569.19
lat (usec): min=503, max=10340, avg=642.58, stdev=221.33
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=12900, max=26318, per=99.67%, avg=24786.57, stdev=442.86, samples=480
iops : min= 3222, max= 6578, avg=6195.62, stdev=110.80, samples=480
lat (nsec) : 500=0.01%
lat (usec) : 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%, 500=0.01%
lat (usec) : 750=95.30%, 1000=3.10%
lat (msec) : 2=1.15%, 4=0.34%, 10=0.09%, 20=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=24.3MiB/s (25.5MB/s), 24.3MiB/s-24.3MiB/s (25.5MB/s-25.5MB/s), io=1457MiB (1528MB), run=60001-60001msec
16KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randwrite_16KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=16K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randwrite_16KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_encrypt_randwrite_16KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=86.8MiB/s][w=5553 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][w=82.6MiB/s][w=5285 IOPS][eta 00m:00s]
fio_encrypt_randwrite_16KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=7016: Thu Oct 17 05:10:36 2024
write: IOPS=5130, BW=80.2MiB/s (84.1MB/s)(4810MiB/60001msec); 0 zone resets
slat (usec): min=6, max=992, avg=22.68, stdev=16.55
clat (nsec): min=702, max=21233k, avg=756119.64, stdev=405928.49
lat (usec): min=554, max=21260, avg=778.80, stdev=406.76
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=50019, max=91744, per=100.00%, avg=82173.10, stdev=2369.07, samples=476
iops : min= 3124, max= 5732, avg=5134.11, stdev=148.07, samples=476
lat (nsec) : 750=0.01%
lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%
lat (usec) : 250=0.01%, 500=0.01%, 750=77.54%, 1000=17.35%
lat (msec) : 2=3.66%, 4=1.12%, 10=0.30%, 20=0.01%, 50=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=80.2MiB/s (84.1MB/s), 80.2MiB/s-80.2MiB/s (84.1MB/s-84.1MB/s), io=4810MiB (5043MB), run=60001-60001msec
64KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randwrite_64KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=64K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randwrite_64KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_encrypt_randwrite_64KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=135MiB/s][w=2164 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][100.0%][w=120MiB/s][w=1916 IOPS][eta 00m:00s]
fio_encrypt_randwrite_64KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6860: Thu Oct 17 05:18:24 2024
write: IOPS=2118, BW=132MiB/s (139MB/s)(7943MiB/60001msec); 0 zone resets
slat (usec): min=8, max=158724, avg=35.91, stdev=446.49
clat (nsec): min=697, max=38614k, avg=1851348.62, stdev=1023873.75
lat (usec): min=780, max=158724, avg=1887.26, stdev=1114.42
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=51123, max=228789, per=99.71%, avg=135170.47, stdev=5365.57, samples=480
iops : min= 798, max= 3574, avg=2110.28, stdev=83.89, samples=480
lat (nsec) : 750=0.01%
lat (usec) : 4=0.01%, 10=0.02%, 20=0.01%, 50=0.01%, 750=0.01%
lat (usec) : 1000=5.72%
lat (msec) : 2=64.03%, 4=28.19%, 10=1.83%, 20=0.14%, 50=0.04%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=132MiB/s (139MB/s), 132MiB/s-132MiB/s (139MB/s-139MB/s), io=7943MiB (8329MB), run=60001-60001msec
256KiB
fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randwrite_256KiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=256K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randwrite_256KiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 256KiB-256KiB, (W) 256KiB-256KiB, (T) 256KiB-256KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_encrypt_randwrite_256KiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=140MiB/s][w=559 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][100.0%][w=140MiB/s][w=558 IOPS][eta 00m:00s]
fio_encrypt_randwrite_256KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=5200: Thu Oct 17 05:25:44 2024
write: IOPS=567, BW=142MiB/s (149MB/s)(8513MiB/60006msec); 0 zone resets
slat (usec): min=17, max=9304, avg=127.84, stdev=201.44
clat (nsec): min=359, max=64811k, avg=6918781.87, stdev=2318878.99
lat (usec): min=1406, max=64851, avg=7046.62, stdev=2310.50
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=75323, max=371200, per=99.70%, avg=144841.38, stdev=6175.77, samples=480
iops : min= 292, max= 1450, avg=564.35, stdev=24.16, samples=480
lat (nsec) : 500=0.02%, 750=0.01%
lat (usec) : 2=0.01%, 4=0.01%, 10=0.05%, 20=0.02%, 50=0.01%
lat (usec) : 100=0.01%, 250=0.01%
lat (msec) : 2=0.76%, 4=9.00%, 10=86.04%, 20=3.89%, 50=0.19%
lat (msec) : 100=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=142MiB/s (149MB/s), 142MiB/s-142MiB/s (149MB/s-149MB/s), io=8513MiB (8926MB), run=60006-60006msec
1MiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randwrite_1MiB_block_1GiB_4jobs `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randwrite `
--bs=1M `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randwrite_1MiB_block_1GiB_4jobs: (g=0): rw=randwrite, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
fio_encrypt_randwrite_1MiB_block_1GiB_4jobs: Laying out IO file (1 file / 1024MiB)
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][18.3%][w=141MiB/s][w=141 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=4): [w(4)][100.0%][w=143MiB/s][w=143 IOPS][eta 00m:00s]
fio_encrypt_randwrite_1MiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=2156: Thu Oct 17 05:32:06 2024
write: IOPS=144, BW=145MiB/s (152MB/s)(8680MiB/60023msec); 0 zone resets
slat (usec): min=40, max=278158, avg=624.81, stdev=4019.33
clat (nsec): min=581, max=84437k, avg=27021958.45, stdev=8674755.35
lat (msec): min=5, max=278, avg=27.65, stdev= 9.08
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=85500, max=324980, per=99.75%, avg=147719.30, stdev=5690.99, samples=480
iops : min= 80, max= 314, avg=142.55, stdev= 5.55, samples=480
lat (nsec) : 750=0.02%, 1000=0.01%
lat (usec) : 2=0.05%, 4=0.01%, 10=0.05%, 20=0.21%, 50=0.03%
lat (usec) : 100=0.02%
lat (msec) : 10=3.71%, 20=14.57%, 50=80.60%, 100=0.71%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
WRITE: bw=145MiB/s (152MB/s), 145MiB/s-145MiB/s (152MB/s-152MB/s), io=8680MiB (9102MB), run=60023-60023msec
randread
4KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randread_4KiB_block_1GiB_4jobs `
--filename fio_encrypt_randwrite_4KiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=4K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randread_4KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=39.3MiB/s][r=10.1k IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=56.5MiB/s][r=14.5k IOPS][eta 00m:00s]
fio_encrypt_randread_4KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6608: Thu Oct 17 05:40:06 2024
read: IOPS=12.3k, BW=47.9MiB/s (50.3MB/s)(2877MiB/60001msec)
slat (usec): min=3, max=3265, avg=10.08, stdev= 8.53
clat (usec): min=57, max=30863, avg=315.00, stdev=219.63
lat (usec): min=204, max=30870, avg=325.08, stdev=219.60
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=30641, max=60128, per=100.00%, avg=49121.31, stdev=2207.15, samples=476
iops : min= 7659, max=15030, avg=12279.18, stdev=551.75, samples=476
lat (usec) : 100=0.01%, 250=42.82%, 500=46.13%, 750=7.06%, 1000=3.19%
lat (msec) : 2=0.61%, 4=0.17%, 10=0.02%, 20=0.01%, 50=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=47.9MiB/s (50.3MB/s), 47.9MiB/s-47.9MiB/s (50.3MB/s-50.3MB/s), io=2877MiB (3017MB), run=60001-60001msec
16KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randread_16KiB_block_1GiB_4jobs `
--filename fio_encrypt_randwrite_16KiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=16K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randread_16KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=185MiB/s][r=11.8k IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=190MiB/s][r=12.1k IOPS][eta 00m:00s]
fio_encrypt_randread_16KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=1988: Thu Oct 17 05:54:17 2024
read: IOPS=12.5k, BW=196MiB/s (205MB/s)(11.5GiB/60001msec)
slat (usec): min=4, max=1228, avg= 9.49, stdev= 7.42
clat (usec): min=63, max=8756, avg=309.27, stdev=129.24
lat (usec): min=223, max=8763, avg=318.76, stdev=129.38
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=137213, max=217232, per=100.00%, avg=200550.14, stdev=5172.68, samples=476
iops : min= 8575, max=13574, avg=12532.64, stdev=323.21, samples=476
lat (usec) : 100=0.01%, 250=5.39%, 500=91.20%, 750=1.29%, 1000=1.59%
lat (msec) : 2=0.47%, 4=0.07%, 10=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=196MiB/s (205MB/s), 196MiB/s-196MiB/s (205MB/s-205MB/s), io=11.5GiB (12.3GB), run=60001-60001msec
64KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randread_64KiB_block_1GiB_4jobs `
--filename fio_encrypt_randwrite_64KiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=64K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randread_64KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 64.0KiB-64.0KiB, (W) 64.0KiB-64.0KiB, (T) 64.0KiB-64.0KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=428MiB/s][r=6852 IOPS][eta 00m:49s]
Jobs: 4 (f=4): [r(4)][28.3%][r=437MiB/s][r=6987 IOPS][eta 00m:43s]
fio_encrypt_randread_64KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=1164: Thu Oct 17 06:07:17 2024
read: IOPS=6637, BW=415MiB/s (435MB/s)(24.3GiB/60001msec)
slat (usec): min=5, max=850, avg=16.73, stdev=14.61
clat (usec): min=127, max=12491, avg=585.00, stdev=228.65
lat (usec): min=322, max=12506, avg=601.73, stdev=227.52
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=193664, max=452912, per=86.47%, avg=367342.55, stdev=21493.49, samples=132
iops : min= 3026, max= 7076, avg=5738.42, stdev=335.78, samples=132
lat (usec) : 250=0.01%, 500=29.83%, 750=64.94%, 1000=1.67%
lat (msec) : 2=3.07%, 4=0.47%, 10=0.01%, 20=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=415MiB/s (435MB/s), 415MiB/s-415MiB/s (435MB/s-435MB/s), io=24.3GiB (26.1GB), run=60001-60001msec
256KiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randread_256KiB_block_1GiB_4jobs `
--filename fio_encrypt_randwrite_256KiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=256K `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randread_256KiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 256KiB-256KiB, (W) 256KiB-256KiB, (T) 256KiB-256KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=567MiB/s][r=2266 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=476MiB/s][r=1904 IOPS][eta 00m:00s]
fio_encrypt_randread_256KiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=7132: Thu Oct 17 06:09:05 2024
read: IOPS=2262, BW=566MiB/s (593MB/s)(33.1GiB/60002msec)
slat (usec): min=9, max=1109, avg=34.95, stdev=25.75
clat (usec): min=625, max=15604, avg=1731.11, stdev=322.33
lat (usec): min=676, max=15620, avg=1766.07, stdev=319.99
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=371200, max=593929, per=100.00%, avg=579632.31, stdev=6966.40, samples=476
iops : min= 1450, max= 2318, avg=2262.71, stdev=27.17, samples=476
lat (usec) : 750=0.03%, 1000=0.35%
lat (msec) : 2=88.95%, 4=10.51%, 10=0.16%, 20=0.01%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=566MiB/s (593MB/s), 566MiB/s-566MiB/s (593MB/s-593MB/s), io=33.1GiB (35.6GB), run=60002-60002msec
1MiB
> fio `
--directory=\\SMB-SERVER.corp.non-97.net\share\fio `
--name fio_encrypt_randread_1MiB_block_1GiB_4jobs `
--filename fio_encrypt_randwrite_1MiB_block_1GiB_4jobs.0.0 `
--allow_file_create=0 `
--ioengine=windowsaio `
--direct=1 `
--iodepth=1 `
--rw=randread `
--bs=1M `
.
.
(以降のオプションは同一なので省略)
.
.
fio_encrypt_randread_1MiB_block_1GiB_4jobs: (g=0): rw=randread, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=windowsaio, iodepth=1
...
fio-3.38
Starting 4 threads
Jobs: 4 (f=4): [r(4)][18.3%][r=570MiB/s][r=570 IOPS][eta 00m:49s]
.
.
(中略)
.
.
Jobs: 4 (f=0): [f(4)][100.0%][r=492MiB/s][r=492 IOPS][eta 00m:00s]
fio_encrypt_randread_1MiB_block_1GiB_4jobs: (groupid=0, jobs=4): err= 0: pid=6032: Thu Oct 17 06:17:23 2024
read: IOPS=568, BW=568MiB/s (596MB/s)(33.3GiB/60006msec)
slat (usec): min=24, max=1030, avg=82.13, stdev=43.62
clat (usec): min=2280, max=44916, avg=6955.50, stdev=883.03
lat (usec): min=2374, max=44947, avg=7037.63, stdev=880.78
clat percentiles (usec): ..(今回は省略)..
bw ( KiB/s): min=486901, max=600609, per=100.00%, avg=582247.34, stdev=3002.20, samples=476
iops : min= 475, max= 586, avg=567.34, stdev= 2.91, samples=476
lat (msec) : 4=0.18%, 10=99.29%, 20=0.47%, 50=0.06%
cpu : ..(有意な差がなかったので省略)..
IO depths : ..(iodepth=1なので省略)..
Run status group 0 (all jobs):
READ: bw=568MiB/s (596MB/s), 568MiB/s-568MiB/s (596MB/s-596MB/s), io=33.3GiB (35.7GB), run=60006-60006msec
考察
fioの結果
fioの実行結果をまとめると以下のとおりです。
SMB暗号化 | 読み書き | ブロックサイズ | 平均スループット(MiBps) | 平均IOPS | 平均レイテンシー(usec) | SMB暗号化時との平均スループット差 | SMB暗号化時との平均IOPS差 | SMB暗号化時との平均レイテンシー差 |
---|---|---|---|---|---|---|---|---|
無効 | randwrite | 4KiB | 25.20 | 6449.7 | 617.39 | - | - | - |
無効 | randwrite | 16KiB | 83.13 | 5318.39 | 748.86 | - | - | - |
無効 | randwrite | 64KiB | 132.98 | 2126.08 | 1873.54 | - | - | - |
無効 | randwrite | 256KiB | 143.00 | 570.82 | 6971.92 | - | - | - |
無効 | randwrite | 1MiB | 143.94 | 142.07 | 277100 | - | - | - |
無効 | randread | 4KiB | 25.44 | 6510.35 | 613.88 | - | - | - |
無効 | randread | 16KiB | 57.20 | 3660.49 | 1091.4 | - | - | - |
無効 | randread | 64KiB | 529.22 | 8466.02 | 472.25 | - | - | - |
無効 | randread | 256KiB | 566.30 | 2264.25 | 1766.23 | - | - | - |
無効 | randread | 1MiB | 571.91 | 570.27 | 6997.1 | - | - | - |
有効 | randwrite | 4KiB | 24.21 | 6195.62 | 642.58 | -3.94% | -3.94% | 4.08% |
有効 | randwrite | 16KiB | 80.25 | 5134.11 | 778.8 | -3.46% | -3.46% | 4.00% |
有効 | randwrite | 64KiB | 132.00 | 2110.28 | 1887.26 | -0.74% | -0.74% | 0.73% |
有効 | randwrite | 256KiB | 141.45 | 564.35 | 7046.62 | -1.09% | -1.13% | 1.07% |
有効 | randwrite | 1MiB | 144.26 | 142.55 | 276500 | 0.22% | 0.34% | -0.22% |
有効 | randread | 4KiB | 47.97 | 12279.18 | 325.08 | 88.60% | 88.61% | -47.05% |
有効 | randread | 16KiB | 195.85 | 12532.64 | 129.38 | 242.40% | 242.38% | -88.15% |
有効 | randread | 64KiB | 358.73 | 5738.42 | 601.73 | -32.21% | -32.22% | 27.42% |
有効 | randread | 256KiB | 566.05 | 2262.71 | 1766.07 | -0.04% | -0.07% | -0.01% |
有効 | randread | 1MiB | 568.60 | 567.34 | 7037.63 | -0.58% | -0.51% | 0.58% |
※ randreadの4KiBと16KiBは他と計測方法が違うので注意
さらに要約すると以下のようなことが言えます。
- randwriteのSMB暗号化時との平均スループット差は-3.94%〜0.22%
- randwriteのSMB暗号化時との平均IOPS差は-3.94%〜0.22%
- randwriteのSMB暗号化時との平均レイテンシー差は-0.22%〜4.08%
- randreadのSMB暗号化時との平均スループット差は-32.21%〜-0.58%
- randreadのSMB暗号化時との平均IOPS差は-32.22%〜-0.51%
- randreadのSMB暗号化時との平均レイテンシー差は-0.01%〜27.42%
- スループットとIOPSは同じ割合で変動する
- ブロックサイズが小さい場合は暗号化時のパフォーマンス差が大きくなる傾向がある
randreadの64KBが外れ値的に大きな差が発生していますが、それ以外は+-5%以内の差に収まっています。
この+-5%のパフォーマンス差をどう捉えるかは動作させたいワークロード次第かと思います。
CloudWatchメトリクスの結果
FSxNのCloudWatchメトリクスも確認してみましょう。
まず、CPU使用率です。
SMB暗号化実施前後で明確にCPU使用率の差がありそうですね。fioのスループット、IOPSと同様でブロックサイズが小さい方がCPU使用率に与える影響が大きそうです。
続いてクライアントIOPSです。
こちらはむしろSMB暗号化実施後の方が増加しています。暗号化によって発生しているオーバーヘッド分のIOが関係しているのかもしれません。
次にクライアントスループットです。
こちらもブロックサイズが小さい場合はSMB暗号化実施後の方が若干増えているように見えます。先述のNetAppのドキュメントにはパフォーマンスへの影響は、 CPU 使用率の増加としてクライアントとサーバの両方に表示されますが、ネットワークトラフィックの量は変わりません。
と記載ありましたが、暗号化によって発生しているオーバーヘッド分が関係しているのかもしれません。
次に平均レイテンシーです。
ブロックサイズが大きい場合のメトリクスが支配的すぎて分かりづらいですが、全体の傾向として大きな差はありませんでした。
その他ディスクスループットやディスクIOPSのバースト発生有無を確認しましたが、こちらは特に発生していませんでした。
細かいIOを長時間実行するようなワークロードではパフォーマンス影響を感じやすいかも
Amazon FSx for NetApp ONTAPでSMBの暗号化が行われている場合、どのぐらいのパフォーマンス影響があるのか確認してみました。
「SQL ServerのストレージとしてSMBサーバーを使用している」など細かいIOを長時間実行するようなワークロードでは暗号化有効時のパフォーマンス影響を感じやすいかもしれないですね。
一方、「ExcelやPDFなどをSMBサーバーに配置しクライアントPCからアクセスする」というような一般的な共有ファイルサーバーとしての利用用途だとパフォーマンスの影響はそこまで大きくないようにも思えます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!